Koa 中间件
Koa 的中间件采用了洋葱圈模型,所有的请求在经过中间件的时候都会执行两次,能够非常方便的执行一些后置处理逻辑。
例如,我们经常需要计算一个请求的响应时间,在 Koa 中, 我们可以在中间件的开始记录初始时间,当响应返回时,代码执行又回到了原来的中间件,此时根据当前时间和初始时间的时间差便得到了响应时间。
function responseTime() {
return async function responseTime(ctx, next) {
const start = Date.now()
await next() // wait for other middleware to run
const delta = Math.ceil(Date.now() - start)
ctx.set('X-Response-Time', delta + 'ms')
})
}}